<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <link rel="Stylesheet" type="text/css" href="default.css" />
  <meta http-equiv="Content-Type" content=
  "text/html; charset=utf-8" />

  <title>Секция "Функции для защиты"</title>
  <style type="text/css">
/*<![CDATA[*/
    div.c2 {text-align: center}
    /*]]>*/
  </style>
</head>

<body>
  <h1>Секция "Функции для защиты"</h1>

  <p>Секция предназначена для выбора защищаемых функций.</p>
  <p><img src="images/project_functions.png" /></p>
  <h3 id="AddFunction">Добавление функции</h3>
  <p>Для того чтобы добавить новый объект в проект, нажмите кнопку "Добавить функцию" на панели инструментов, либо выберите этот пункт в контекстном меню:</p>
  <p><img src="images/project_functions_menu.png" /></p>
  <p>Появится диалог добавления функции:</p>
  <p><img src="images/project_add_function.png" /></p>
  <p>Задайте адрес функции или выберите нужную функцию из списка на вкладке "Функции", начав набирать ее имя в строке быстрого поиска. Вы можете добавить сразу несколько функций, используя множественное выделение. Все выделенные функции будут добавлены с выбраными опциями защиты.</p>
  <p><strong>Опции</strong></p>
  <ul>
    <li><a name="CompilationTypes" id=
    "CompilationTypes"><strong>Тип компиляции</strong></a> -
    выбрать тип компиляции объекта. Правильный выбор способа защиты
    от изучения и взлома для каждого защищаемого объекта
    (процедуры, функции, фрагмента кода) обеспечит оптимальное
    соотношение между защищенностью кода и его быстродействием.
    VMProtect позволяет пользователю установить следующие типы
    компиляции для каждого защищаемого объекта:</li>
      <ul>
        <li><strong>Мутация.</strong> Исполняемый код
        видоизменяется на уровне команд процессора - существующие
        команды видоизменяются, добавляются различные мусорные
        команды и т.д. Данный тип компиляции относительно слабо
        защищает обрабатываемый код от взлома и анализа и главным
        образом препятствует определению обрабатываемых функций с
        помощью сигнатурных анализаторов (PEiD+KANAL, IDA+FLIRT и
        т.д.). Этот тип компиляции целесообразно применять при
        защите библиотечных функций, так как они, как правило, не
        нуждаются в защите от взлома и анализа и достаточно будет
        только изменить их сигнатуры, чтобы взломщик не смог
        автоматически определить, какие именно библиотеки
        используются в приложении. При использовании мутации
        степень защиты от взлома и анализа низкая, скорость
        исполнения кода высокая.</li>

        <li><strong>Виртуализация.</strong> Исполняемый код
        переводится в байт-код, исполняемый на виртуальной машине.
        Данный тип компиляции следует применять для всех критичных
        участков кода, где помимо противодействия взлому и анализу
        важна скорость работы. При использовании виртуализации
        степень защиты от взлома и анализа средняя, скорость
        исполнения кода средняя.</li>

        <li><strong>Ультра (мутация + виртуализация).</strong>
        Исполняемый код видоизменяется на уровне команд процессора
        и уже после этого переводится в байт-код, исполняемый на
        виртуальной машине. Данный тип компиляции следует применять
        для всех участков кода, где не важна скорость работы.
        Степень защиты от взлома и анализа высокая, скорость
        исполнения кода низкая.</li>
      </ul>
    
    <li id="LockToKey"><strong>Привязать к серийному номеру</strong> - при включении данной опции защищенная функция будет <a href="manager/features.htm#lock">недоступна без ввода валидного серийного номера</a>. Таким образом можно, например, ограничивать доступ к определенным функциям приложения в незарегистрированной версии.</li>
  </ul>

  <p id="Search"><strong>Поиск</strong></p>

  <p>Необходимые объекты можно отыскать по их имени в универсальном быстром поиске:</p>
  <p><img src="images/project_functions_search.png" /></p>

  <p>В строке поиска можно использовать стандартные символы подстановки:</p>
  <ul>
    <li><strong>*</strong> - заменяет группу символов произвольной длины;</li>
    <li><strong>?</strong> - заменяет любой одиночный символ.</li>
  </ul>

  <h3 id="AddFolder">Добавление папки</h3>
  <p>Добавление папки осуществляется с помощью контекстного меню:</p>
  <p><img src="images/project_functions_menu.png" /></p>
  <p>Папки используются для группировки защищаемых объектов в
      дереве проекта, а также для группового изменения параметров
      защиты (включение в компиляцию, тип компиляции) для всех
      объектов из этой папки.</p>
  <p>Задайте имя новой папке:</p>
  <p><img src="images/project_add_folder.png" /></p>

  <h3>Редактирование объектов</h3>
  <p>В правой части окна отображается содержимое выбранного
  объекта. Если в дереве проекта выбран защищаемый объект, то с
  правой стороны отображается дизассемблированное представление
  этого объекта:</p>

  <p><img src="images/project_functions_content.png" alt=
  "Код" /></p>
  <p>Щелчок правой кнопкой мыши по строчке кода вызывает контекстное меню:</p>
  <p><img src="images/project_functions_menu3.png" /></p>
  <ul>
    <li><a name="ExtAddress" id="ExtAddress"><strong>Внешний
    адрес</strong></a> - включить выбранный адрес в список <a href=
    "project_options_external_addresses.htm">внешних адресов</a>;</li>

    <li><strong>Конец функции</strong> - ограничить список
    команд, которые будут обработаны в процессе компиляции;</li>
  </ul>

  <p>Если в дереве проекта выбрана папка, то с правой стороны
  отображается список функций, входящих в эту папку:</p>

  <p><img src="images/project_functions_content2.png" /></p>

  <p>Перемещать функции из папки в папку можно простым
  перетаскиванием при помощи мыши.</p>

  <br />
  <br />
  <br />
  <br />
  <hr noshade="noshade" size="1" />

  <div align="center">
    © 2006-2015 Copyright VMProtect Software
  </div>
</body>
</html>
